home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WCLASS95.ZIP / CPPFUNC1.SCT < prev    next >
Encoding:
Text File  |  1995-07-16  |  6.7 KB  |  107 lines

  1. // Class: CLASS_NAME
  2.  
  3. //////////////////////////.cpp file/////////////////////////////////////////////////////
  4. #include "$TRUNCATE_EIGHT$CLASS_NAME$.h"                    
  5.  
  6. SELECT_WHEN ATTRIBUTE_IS_STATIC
  7. [ATTRIBUTE_TYPE CLASS_NAME$::$ATTRIBUTE_NAME = ATTRIBUTE_INITIAL_VALUE$; //Static data member initialization]
  8.  
  9. // Functions for class CLASS_NAME
  10. [
  11. //  Function:     OPERATION_NAME
  12. //  Purpose:     OPERATION_COMMENT1
  13. //  Parameters: CPP_OPERATION_PARAMETERS
  14. //  Comments:     OPERATION_COMMENT2
  15. OPERATION_RETURN_TYPE CLASS_NAME::OPERATION_NAME(CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT 
  16. {
  17.   OPERATION_CODE
  18. }
  19.  
  20.     //Operator= Assignment Operator alternative to compiler provided operator=
  21.         //Assignment alternatives for association objects: (1) initialize association object to nullAssociation Object
  22.         //(2) Shallow copy to copy pointers to association objects (3) Deep copy to copy value of association objects
  23.     //Commented out code copies pointers for 1:1 and 1:M association object data members for shallow copy    
  24. CLASS_NAME& CLASS_NAME::operator= (const CLASS_NAME$& a$CLASS_NAME)
  25. { if (this == &a$CLASS_NAME) return *this;
  26.   int i = 0;         
  27. [  BASE_CLASS$::operator= (a$CLASS_NAME);]
  28. SELECT_WHEN ATTRIBUTE_IS_NORMAL
  29. [  ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;]
  30. [  AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]
  31. [  ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  32. [  // ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME;//Commented out shallow copy]    
  33. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  34. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ; //Initialization of pointers to 0 ]
  35. [  //for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  36.   return *this;                                                    
  37. }                    
  38.  
  39.       //Operator== Equality Operator - no compiler generated operator== generated
  40.       //Comparison alternatives for association objects: (1) Do not compare association objects, (2) Do a shallow comparison
  41.       //to compare pointers of association objects (3) Do a deep comparison to compare the values of association objects
  42.       //Update for 1:M association object data members
  43.       //Change C array to C++ collection for 1:M data members     
  44. int CLASS_NAME::operator== (const CLASS_NAME$& a$CLASS_NAME) const
  45. { return (
  46. [ (BASE_CLASS$::operator== (a$CLASS_NAME)) &&]
  47. [                         //Equality check for 1:1 association data members for shallow comparison
  48.  //( ASSOCIATION_ONE_NAME == a$CLASS_NAME$.$ASSOCIATION_ONE_NAME) &&]
  49.             //Equality check for 1:1 aggregation part data members
  50. [ ( AGGREGATION_ONE_NAME == a$CLASS_NAME$.$AGGREGATION_ONE_NAME) &&]
  51.             //Equality check for 1:M aggregation parts 
  52.             //Update for the correct number of aggregation part objects
  53. [ ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&&
  54.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&&
  55.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&&
  56.  ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&&
  57. ]
  58.             //Equality check for 1:M association objects for shallow compare 
  59.             //Update for the correct number of associated objects
  60. [ //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&&
  61.  //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&&
  62.  //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&&
  63.  //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&&
  64.             //Equality check for attribute data members
  65. SELECT_WHEN ATTRIBUTE_IS_NORMAL
  66. [ (ATTRIBUTE_NAME == a$CLASS_NAME$.ATTRIBUTE_NAME) &DELETE_LAST_SYMBOL&DELETE_LAST_SYMBOL]
  67. );
  68. }            
  69.  
  70.             //Operator<< extraction for cout
  71.             //Change C array to C++ collection for 1:M data members     
  72. ostream& operator<< (ostream& os, CLASS_NAME$& a$CLASS_NAME)
  73. { int i = 0;
  74. [  os << (BASE_CLASS &) a$CLASS_NAME;]
  75.   os << "Object Attribute Values - Class CLASS_NAME" << endl;
  76. SELECT_WHEN ATTRIBUTE_IS_NORMAL
  77. [  os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  78. SELECT_WHEN ATTRIBUTE_IS_STATIC
  79. [  os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;]
  80. [  os << "  AGGREGATION_ONE_NAME$: " << a$CLASS_NAME$.$AGGREGATION_ONE_NAME << endl;]
  81. [  if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) os << " ASSOCIATION_ONE_NAME$: " << *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME << endl;
  82. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) os << "  AGGREGATION_MANY_NAME$: " << a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]  << endl; ]
  83. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  84.   { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] != &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS)  os << " ASSOCIATION_MANY_NAME$: " << *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]  << endl;
  85.   } ]    
  86.   return os;
  87. }            
  88.  
  89.             //Operator>> insertion for cin
  90.             //Change C array to C++ collection for 1:M data members      
  91. istream& operator>> (istream& is, CLASS_NAME$& a$CLASS_NAME)
  92. { int i = 0;
  93. [  is >> (BASE_CLASS &) a$CLASS_NAME;]
  94.   cout << "\nEnter Object Attribute Values or 0 - Class CLASS_NAME"; 
  95. SELECT_WHEN ATTRIBUTE_IS_NORMAL
  96. [  cout << "\nEnter ATTRIBUTE_NAME : " << endl;
  97.    is >> a$CLASS_NAME$.$ATTRIBUTE_NAME;]        
  98. [  is >> a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]
  99. [  if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) is >> *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME ; ]
  100. [  for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) is >> a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  101. [  for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++)
  102.   { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]!= &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS)  is >> *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ;
  103.   } ]    
  104.   return is;
  105. }